#include <opencv.hpp>
#include <vector>
#include <string>
using namespace std;
using namespace cv;

class EBF
{
public:
	EBF():sigma(2),scale_nb(5),edgeThreshold(10)
	{}
	EBF(float _sigma,int _scale_nb):sigma(_sigma),scale_nb(_scale_nb)
	{}

	void operator()(Mat &image,vector<KeyPoint> &keypoints,Mat &descriptor);
private:
	void findScaleSpaceExtrema(const Mat &img,const Mat &edgeMap,const vector<Mat> &responseMap,vector<KeyPoint> &keypoints);
public:
	float sigma;
	int scale_nb;
	float edgeThreshold;
};

